// HidLib.h

#pragma once

#include "HidDeviceData.h"

using namespace HidLib;

namespace HidLib
{
	public ref class HidReport
	{
	public:
		HidReport(UInt16 ReportSize);
		HidReport(UInt16 ReportSize, HidDeviceData^ DeviceData);

		property HidDeviceData::ReadStatus Status
		{
			HidDeviceData::ReadStatus get()
			{
				return _Status;
			}
		};

		property bool Exists
		{
			bool get()
			{
				return _Exists;
			}
		};

		property Byte ReportId
		{
			Byte get()
			{
				return _ReportId;
			}
			void set(Byte value)
			{
				_ReportId = value;
				_Exists = true;
			}
		};

		property array<Byte>^ Data
		{
			array<Byte>^ get()
			{
				return _Data;
			}
			void set(array<Byte>^ value)
			{
				_Data = value;
				_Exists = true;
			}
		}

		array<Byte>^ GetBytes();

	private:
		HidDeviceData::ReadStatus _Status;
		Byte _ReportId;
		array<Byte>^ _Data;
		bool _Exists;
	};
}